summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFearlessTobi <thm.frey@gmail.com>2024-02-19 16:36:24 +0100
committerFearlessTobi <thm.frey@gmail.com>2024-02-19 16:36:24 +0100
commitaa6532cf34a57830dd839d685691ae26e96e1bc5 (patch)
tree091f1826f28589f4eb2498e6ee268fec196b1082
parentMerge pull request #13006 from liamwhite/a-hat-in-vram (diff)
downloadyuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.tar
yuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.tar.gz
yuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.tar.bz2
yuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.tar.lz
yuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.tar.xz
yuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.tar.zst
yuzu-aa6532cf34a57830dd839d685691ae26e96e1bc5.zip
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/hle/service/aoc/aoc_u.cpp79
-rw-r--r--src/core/hle/service/aoc/purchase_event_manager.cpp79
-rw-r--r--src/core/hle/service/aoc/purchase_event_manager.h28
4 files changed, 110 insertions, 78 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index fa5c4de37..d923a9a55 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -483,6 +483,8 @@ add_library(core STATIC
hle/service/am/service/window_controller.h
hle/service/aoc/aoc_u.cpp
hle/service/aoc/aoc_u.h
+ hle/service/aoc/purchase_event_manager.cpp
+ hle/service/aoc/purchase_event_manager.h
hle/service/apm/apm.cpp
hle/service/apm/apm.h
hle/service/apm/apm_controller.cpp
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp
index 486719cc0..31c7385ee 100644
--- a/src/core/hle/service/aoc/aoc_u.cpp
+++ b/src/core/hle/service/aoc/aoc_u.cpp
@@ -16,14 +16,13 @@
#include "core/file_sys/registered_cache.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/aoc/aoc_u.h"
+#include "core/hle/service/aoc/purchase_event_manager.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/server_manager.h"
#include "core/loader/loader.h"
namespace Service::AOC {
-constexpr Result ResultNoPurchasedProductInfoAvailable{ErrorModule::NIMShop, 400};
-
static bool CheckAOCTitleIDMatchesBase(u64 title_id, u64 base) {
return FileSys::GetBaseTitleID(title_id) == base;
}
@@ -46,82 +45,6 @@ static std::vector<u64> AccumulateAOCTitleIDs(Core::System& system) {
return add_on_content;
}
-class IPurchaseEventManager final : public ServiceFramework<IPurchaseEventManager> {
-public:
- explicit IPurchaseEventManager(Core::System& system_)
- : ServiceFramework{system_, "IPurchaseEventManager"}, service_context{
- system, "IPurchaseEventManager"} {
- // clang-format off
- static const FunctionInfo functions[] = {
- {0, &IPurchaseEventManager::SetDefaultDeliveryTarget, "SetDefaultDeliveryTarget"},
- {1, &IPurchaseEventManager::SetDeliveryTarget, "SetDeliveryTarget"},
- {2, &IPurchaseEventManager::GetPurchasedEventReadableHandle, "GetPurchasedEventReadableHandle"},
- {3, &IPurchaseEventManager::PopPurchasedProductInfo, "PopPurchasedProductInfo"},
- {4, &IPurchaseEventManager::PopPurchasedProductInfoWithUid, "PopPurchasedProductInfoWithUid"},
- };
- // clang-format on
-
- RegisterHandlers(functions);
-
- purchased_event = service_context.CreateEvent("IPurchaseEventManager:PurchasedEvent");
- }
-
- ~IPurchaseEventManager() override {
- service_context.CloseEvent(purchased_event);
- }
-
-private:
- void SetDefaultDeliveryTarget(HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
-
- const auto unknown_1 = rp.Pop<u64>();
- [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer();
-
- LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1);
-
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
- }
-
- void SetDeliveryTarget(HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
-
- const auto unknown_1 = rp.Pop<u64>();
- [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer();
-
- LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1);
-
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
- }
-
- void GetPurchasedEventReadableHandle(HLERequestContext& ctx) {
- LOG_WARNING(Service_AOC, "called");
-
- IPC::ResponseBuilder rb{ctx, 2, 1};
- rb.Push(ResultSuccess);
- rb.PushCopyObjects(purchased_event->GetReadableEvent());
- }
-
- void PopPurchasedProductInfo(HLERequestContext& ctx) {
- LOG_DEBUG(Service_AOC, "(STUBBED) called");
-
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultNoPurchasedProductInfoAvailable);
- }
-
- void PopPurchasedProductInfoWithUid(HLERequestContext& ctx) {
- LOG_DEBUG(Service_AOC, "(STUBBED) called");
-
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultNoPurchasedProductInfoAvailable);
- }
-
- KernelHelpers::ServiceContext service_context;
-
- Kernel::KEvent* purchased_event;
-};
-
AOC_U::AOC_U(Core::System& system_)
: ServiceFramework{system_, "aoc:u"}, add_on_content{AccumulateAOCTitleIDs(system)},
service_context{system_, "aoc:u"} {
diff --git a/src/core/hle/service/aoc/purchase_event_manager.cpp b/src/core/hle/service/aoc/purchase_event_manager.cpp
new file mode 100644
index 000000000..83124cd21
--- /dev/null
+++ b/src/core/hle/service/aoc/purchase_event_manager.cpp
@@ -0,0 +1,79 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/hle/service/aoc/purchase_event_manager.h"
+#include "core/hle/service/ipc_helpers.h"
+
+namespace Service::AOC {
+
+constexpr Result ResultNoPurchasedProductInfoAvailable{ErrorModule::NIMShop, 400};
+
+IPurchaseEventManager::IPurchaseEventManager(Core::System& system_)
+ : ServiceFramework{system_, "IPurchaseEventManager"},
+ service_context{system, "IPurchaseEventManager"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, &IPurchaseEventManager::SetDefaultDeliveryTarget, "SetDefaultDeliveryTarget"},
+ {1, &IPurchaseEventManager::SetDeliveryTarget, "SetDeliveryTarget"},
+ {2, &IPurchaseEventManager::GetPurchasedEventReadableHandle, "GetPurchasedEventReadableHandle"},
+ {3, &IPurchaseEventManager::PopPurchasedProductInfo, "PopPurchasedProductInfo"},
+ {4, &IPurchaseEventManager::PopPurchasedProductInfoWithUid, "PopPurchasedProductInfoWithUid"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+
+ purchased_event = service_context.CreateEvent("IPurchaseEventManager:PurchasedEvent");
+}
+
+IPurchaseEventManager::~IPurchaseEventManager() {
+ service_context.CloseEvent(purchased_event);
+}
+
+void IPurchaseEventManager::SetDefaultDeliveryTarget(HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+
+ const auto unknown_1 = rp.Pop<u64>();
+ [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer();
+
+ LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultSuccess);
+}
+
+void IPurchaseEventManager::SetDeliveryTarget(HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+
+ const auto unknown_1 = rp.Pop<u64>();
+ [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer();
+
+ LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultSuccess);
+}
+
+void IPurchaseEventManager::GetPurchasedEventReadableHandle(HLERequestContext& ctx) {
+ LOG_WARNING(Service_AOC, "called");
+
+ IPC::ResponseBuilder rb{ctx, 2, 1};
+ rb.Push(ResultSuccess);
+ rb.PushCopyObjects(purchased_event->GetReadableEvent());
+}
+
+void IPurchaseEventManager::PopPurchasedProductInfo(HLERequestContext& ctx) {
+ LOG_DEBUG(Service_AOC, "(STUBBED) called");
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultNoPurchasedProductInfoAvailable);
+}
+
+void IPurchaseEventManager::PopPurchasedProductInfoWithUid(HLERequestContext& ctx) {
+ LOG_DEBUG(Service_AOC, "(STUBBED) called");
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultNoPurchasedProductInfoAvailable);
+}
+
+} // namespace Service::AOC
diff --git a/src/core/hle/service/aoc/purchase_event_manager.h b/src/core/hle/service/aoc/purchase_event_manager.h
new file mode 100644
index 000000000..efde3c8f3
--- /dev/null
+++ b/src/core/hle/service/aoc/purchase_event_manager.h
@@ -0,0 +1,28 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/kernel_helpers.h"
+#include "core/hle/service/os/event.h"
+#include "core/hle/service/service.h"
+
+namespace Service::AOC {
+
+class IPurchaseEventManager final : public ServiceFramework<IPurchaseEventManager> {
+public:
+ explicit IPurchaseEventManager(Core::System& system_);
+ ~IPurchaseEventManager() override;
+
+ void SetDefaultDeliveryTarget(HLERequestContext& ctx);
+ void SetDeliveryTarget(HLERequestContext& ctx);
+ void GetPurchasedEventReadableHandle(HLERequestContext& ctx);
+ void PopPurchasedProductInfo(HLERequestContext& ctx);
+ void PopPurchasedProductInfoWithUid(HLERequestContext& ctx);
+
+private:
+ KernelHelpers::ServiceContext service_context;
+ Kernel::KEvent* purchased_event;
+};
+
+} // namespace Service::AOC